package com.wust.supermarket.dao;

import java.util.List;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import com.wust.supermarket.domain.Sale;

@Mapper
@Repository
public interface SaleDao {
	/**
	 * 查询所有订单
	 * @return 订单列
	 */
	List<Sale> selectALlSales();
	
	/**
	 * 通过saleId查询订单
	 * @param saleId
	 * @return 订单列
	 */
	List<Sale> selectSaleById(String saleId);
	
	/**
	 * 通过memberId查询订单
	 * @param memberId
	 * @return 订单列
	 */
	List<Sale> selectSaleByMemberId(int memberId);
	
	/**
	 * 通过merchId查询订单
	 * @param merchId
	 * @return 订单列
	 */
	List<Sale> selectSaleByMerchId(int merchId);
	
	/**
	 * 通过saleId,memberId,merchId查询一条订单
	 * @param saleId
	 * @param memberId
	 * @param merchId
	 * @return 一条订单
	 */
	Sale selectSaleBySaleIdAndMemberIdAndMerchId(@Param("saleId")String saleId,@Param("memberId")int memberId,@Param("merchId")int merchId);
	
	/**
	 * 添加订单
	 * @param sale
	 * @return 改变行数
	 */
	int insertSale(Sale sale);
	
	/**
	 * 更新订单
	 * @param sale
	 * @return 改变行数
	 */
	int updateSale(Sale sale);
	
	/**
	 * 删除一条订单数据（通过saleId,memberId,merchId）
	 * @param saleId
	 * @param memberId
	 * @param merchId
	 * @return 改变行数
	 */
	int deleteSaleBySaleIdAndMemberIdAndMerchId(@Param("saleId")String saleId,@Param("memberId")int memberId,@Param("merchId")int merchId);
	
	/**
	 * 删除订单数据（通过saleId）
	 * @param saleId
	 * @return 改变行数
	 */
	int deleteSaleBySaleId(String saleId);
	
	/**
	 * 删除订单数据（通过saleId,memberId）
	 * @param saleId
	 * @param memberId
	 * @return 改变行数
	 */
	int deleteSaleBySaleIdAndMemberId(@Param("saleId")String saleId,@Param("memberId")int memberId);
	
	/**
	 *  删除订单数据（通过saleId,merchId）
	 * @param saleId
	 * @param merchId
	 * @return 改变行数
	 */
	int deleteSaleBySaleIdAndMerchId(@Param("saleId")String saleId,@Param("merchId")int merchId);
}
